import { queryMediaDomainConfigList, MediaDomainConfig } from '@/services/user'

// 全局缓存变量
let mediaDomainConfigList: MediaDomainConfig[] | null = null
let isLoading = false
let loadPromise: Promise<MediaDomainConfig[]> | null = null

/**
 * 获取媒体域名配置列表
 * 全局只获取一次，后续调用直接返回缓存的数据
 */
export async function getMediaDomainConfigList(): Promise<MediaDomainConfig[]> {
  // 如果已经有缓存数据，直接返回
  if (mediaDomainConfigList) {
    return mediaDomainConfigList
  }

  // 如果正在加载中，返回正在进行的Promise
  if (isLoading && loadPromise) {
    return loadPromise
  }

  // 开始加载
  isLoading = true
  loadPromise = (async () => {
    try {
      const response = await queryMediaDomainConfigList()
      if (response.success && response.data) {
        mediaDomainConfigList = response.data
        return response.data
      } else {
        console.error('获取媒体域名配置失败:', response.msg)
        return []
      }
    } catch (error) {
      console.error('获取媒体域名配置异常:', error)
      return []
    } finally {
      isLoading = false
      loadPromise = null
    }
  })()

  return loadPromise
}

/**
 * 清除缓存（用于测试或重新加载）
 */
export function clearMediaDomainCache() {
  mediaDomainConfigList = null
  isLoading = false
  loadPromise = null
}
